var fs = require('fs');

console.time('test');
console.log('console.log');
console.info('console.info');
console.warn('console.warn');
console.error('console.err');
console.timeEnd('test');

// 格式化
console.log('hello %s', 'world');

//向标准错误流输出当前的调用栈。
// console.trace();

// 断言,param1为false,将抛出AssertionError
console.assert(1 == 1, '判断条件不成立');

/**
 * 进程事件相关
 * exit 进程退出时出发
 * beforeExit 当node清空事件循环，并且没有其他安排时出发这个事件
 * uncaughtException 当一个异常冒泡回到事件循环，触发这个事件。
 * Signal 当进程收到信号就触发。信号列表详见POSIX信号名，如：SIGINT、SIGUSR1等。
 */
process.on('beforeExit', function(code) {
  // console.log('process beforeExit');
});
process.on('uncaughtException', function(code) {
  console.log('process uncaughtException');
});
process.on('exit', function(code) {
  console.log('process exit');
  var buffer = fs.readFile('../input.txt', function(err, data) {
    if (err) {
      console.info(err.stack);
    }
    // 未读完状态
    console.info(data.toString());
  });
  /**
   * code:
   * 0 正常退出
   * 1 有异常出现
   * 5 致命错误
   **/
  console.log('退出码为:', code);
});

/**
 * stdout 标准输出流
 * stderr 标准错误流
 * stdin 标准输入流
 */
process.stdout.write('process stdout\n');
process.stderr.write('process stderr\n');
process.stdin.read(function(data) {
  console.info('stdin:' + data);
});

/**
 * process 属性
 */
console.info('process execPath:' + process.execPath); //执行路径
console.info('process platform:' + process.platform); //运行平台
console.info('process title:' + process.title); //进程名
console.info('process version:' + process.version); //进程名
console.info('process mainModule:' + process.arch); //CPU架构
console.info('process pid:' + process.pid); //process id

/**
 * process 方法
 */
console.info('process cwd:' + process.cwd()); //当前目录
// process.abort();

/**
 * 1.正常退出
 * 2.process.exit() 退出进程
 * 3.抛出异常退出进程
 **/
console.log("程序执行结束");
process.exit(0);
// 会被process的uncaughtException捕获
throw new Exception('haha1');
